Topics (Winter 2024/25)

Please read the general course information first.

We list specific aspects that are of interest to one or more members of our research group. By selecting three of these as your desired seminar/project topics, you signal to us which aspects are most interesting to you.

Feel free to propose your own topics, or variants of existing topics, but note that we only offer topics that we believe we can actually supervise adequately.

Programming Languages for Distributed Systems

Many application scenarios require some for of “distributed logic”: collaboration, communication, sharing data, accessing services, synchronization between multiple devices, etc. However, designing distributed applications is often seen as too hard, thus applications are moved “to the cloud” at the cost of offline-capability, privacy, and performance.

Instead, we investigate programming language based methodologies to answer hard questions systematically. Typical questions include: How can we deal with conflicts that arise from merging changes from multiple peers? How can users relate their local copy of the data to the global state of the system? What features and guarantees do applications actually require?

Choose from these specific proposals, or suggest a topic of your own:

Decentralized Access Control with Cryptree Seminar, Project
Language-Based Approaches to Data Consistency Seminar
Library-Based Choreographic Programming Seminar, Project
Local-First Data Management Project
Resilient Decentralized Consensus Seminar, Project
Session Types Seminar, Project
Testing/Verification of Distributed Systems Seminar

Advanced Functional Programming

Programming language techniques beyond those present in mainstream languages are often useful to solve a wide range of problems in different domains. An important part of programming language design is the study of repeating patterns in the design of programming languages, a succinct and correct description of their behavior, further extension and generalization to make them more powerful, and then again the search for intuitive examples of their use.

Often advanced functional programming takes inspiration from logic and math.

Choose from these specific proposals, or suggest a topic of your own:

Composable Abstractions for Deep Learning Seminar, Project
Demand-driven Incrementalization Seminar
Evaluating Recursive Sets Seminar
Information Flow Control For Free Seminar
Linear and Relational Algebra Compiler Project
Optimal Code Motion Seminar, Project
Probabilistic Programming Seminar, Project
Programming with Effects Seminar

Verification

Choose from these specific proposals, or suggest a topic of your own:

Completeness Thresholds in Bounded Model Checking Seminar
Frame Problem: Dynamic Frames vs Separation Logic Seminar
Heterogeneous Program Verification Project
Separation Logic-Based Program Verifier Using Z3 Project
Tool Support for Separation Logic Seminar

For related topics, also take a look at the general course offers by our research group: Courses at STG

Specifically, in you may be interested in the Seminar on Artificial Intelligence for Coding Assistance and in the Seminar on Foundations of Static Analysis